package cn.bearspark.api.service.main;

import cn.bearspark.api.vo.main.article.*;

import java.util.List;

/**
 * 专栏的服务接口
 *
 * @author f
 */
public interface ArticleService {

    /**
     * 发布专栏
     *
     * @param publishArticleVO 发布专栏的请求对象
     */
    void publish(PublishArticleVO publishArticleVO);

    /**
     * 获取专栏信息
     *
     * @param articleId 待获取信息的专栏 id
     * @return 专栏信息
     */
    Article4ModifyVO get(Long articleId);

    /**
     * 修改专栏
     *
     * @param modifyArticleVO 修改专栏的请求对象
     */
    void modify(ModifyArticleVO modifyArticleVO);

    /**
     * 删除专栏
     *
     * @param articleId 待删除的专栏 id
     */
    void delete(Long articleId);

    /**
     * 获取专栏详情
     *
     * @param articleId 待获取详情的专栏 id
     * @return 专栏详情
     */
    ArticleDetailVO detail(Long articleId);

    /**
     * 分页查询指定分类的专栏
     *
     * @param pageNum      页数
     * @param pageSize     元素数
     * @param categoryId   指定的分类 id，如果为 null，表示查询所有专栏
     * @param listedUserId 待分页查询专栏的用户 id
     * @return 如果分类 id 为 null，则返回用户全部专栏的分页查询集合；如果分类 id 不为 null，则返回用户指定分类下的专栏的分页查询集合
     */
    List<ArticleSimpleVO> page(Integer pageNum, Integer pageSize, Long categoryId, Long listedUserId);
}
